package com.digitalart.futbol.service.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.digitalart.futbol.hibernate.ejb.Cancha;
import com.digitalart.futbol.hibernate.ejb.Duenio;
import com.digitalart.futbol.hibernate.ejb.Reservacion;
import com.digitalart.futbol.hibernate.service.CanchaService;
import com.digitalart.futbol.hibernate.service.DuenioService;
import com.digitalart.futbol.hibernate.service.ReservacionService;

@Controller
@RequestMapping(value="/reservacion")
public class ReservacionController {

	@Autowired
	private ReservacionService reservacionServ;
	
	@Autowired
	private DuenioService duenioServ;
	
	@Autowired
	private CanchaService canchaServ;
	
	@RequestMapping(value = "/add/{nombre}/{id}/{telefono}/{horaInicio}/{horaFin}/{tipo}/{idCancha}/{fecha}", method = RequestMethod.GET)
	public @ResponseBody Reservacion add(@PathVariable("nombre") String nombre,@PathVariable("id") int id,@PathVariable("telefono") String telefono
			,@PathVariable("horaInicio") int horaInicio,@PathVariable("horaFin") int horaFin,@PathVariable("tipo") String tipo,@PathVariable("idCancha") int idCancha,@PathVariable("fecha") String fecha) {
		
		System.out.println("Me cago en pedro y entramos" + id);
		
		Duenio duenio = duenioServ.retriveDuenio(id);
		
		System.out.println("Me cago en pedro y no se callo");
		
		
		Reservacion reservacion = new Reservacion();
		Cancha cancha = canchaServ.retriveCancha(idCancha);
		
		if(duenio == null){
			
//			duenio = registrarDuenio(nombre, id, telefono);
//			
//			duenio=duenioServ.createDuenio(duenio);
//			
//			
//			registrarReservacion(horaInicio, horaFin, tipo, duenio , reservacion, cancha,fecha);
//
//			reservacionServ.createReservacion(reservacion);
			
		}else{
			
			registrarReservacion(horaInicio, horaFin, tipo, duenio, reservacion, cancha,fecha);
			
			reservacionServ.createReservacion(reservacion);
			
		}
		
		return reservacion;
	}

	@RequestMapping(value = "/getAll", method = RequestMethod.GET)
	public @ResponseBody List<Reservacion> getAll() {
	
		List<Reservacion> reservaciones = reservacionServ.getAll();
		
		return reservaciones;
	}
	
	@RequestMapping(value = "/getById/{id}", method = RequestMethod.GET)
	public @ResponseBody Reservacion getById(@PathVariable("id") int id) {
	
		Reservacion reservacion = reservacionServ.retriveReservacion(id);
		
		return reservacion;
	}
	
	@RequestMapping(value = "/eliminar/{idReservacion}", method = RequestMethod.GET)
	public @ResponseBody Reservacion eliminar(@PathVariable("idReservacion") int idReservacion) {
	
		Reservacion reservacion = reservacionServ.retriveReservacion(idReservacion);

		
		
		reservacion.setDeleted(true);
		reservacionServ.createReservacion(reservacion);
		
		
		return reservacion;
	}
	
//	@SuppressWarnings("unused")
//	private Duenio registrarDuenio(String nombre, String cedula, String telefono) {
//		Duenio duenio;
//		duenio = new Duenio();
//		duenio.setCedula(cedula);
//		duenio.setNombre(nombre);
//		duenio.setTelefono(telefono);
//		return duenio;
//	}

	private void registrarReservacion(int horaInicio, int horaFin, String tipo,
			Duenio duenio, Reservacion reservacion, Cancha cancha,String fecha) {
		reservacion.setCancha(cancha);
		reservacion.setDueno(duenio);
		reservacion.setHora_fin(horaFin);
		reservacion.setHora_inicio(horaInicio);
		reservacion.setTipo(tipo);
		reservacion.setDate(fecha);
	}
}
